package com.zk.client;

import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.RetryNTimes;


/**
 * 创建zk客户端
 * @author zyf
 *
 */
public class ZkClient {

	/**
	 * zk暴露的地址
	 */
	public static final String ZK_ADDRESS = "127.0.0.1:2181";
	
	public static final String ZK_PATH = "/zyf";
	
	public static final String ZK_TMP_PATH = "/tmp";
	
	public static final String ZK_CHILDER_PATH = "/zyf/data";
	
	public static void main(String [] args){
		/**
		 * 创建zk的客户端有两种方法
		 * 一个工厂方法newClient, 
		 * 一个构建方法build.
		 * 一个构建方法build. 使用工厂方法newClient可以创建一个默认的实例, 而build构建方法可以对实例进行定制.
		 * CuratorFramework是线程安全的. 在一个应用中可以共享同一个zk集群的CuratorFramework. 
		 */
		try{
			/**
			 * 创建zk的客户端有两种方法
			 * 一个工厂方法newClient, 
			 * 一个构建方法build.
			 * 一个构建方法build. 使用工厂方法newClient可以创建一个默认的实例, 而build构建方法可以对实例进行定制.
			 * CuratorFramework是线程安全的. 在一个应用中可以共享同一个zk集群的CuratorFramework. 
			 */
			CuratorFramework client = CuratorFrameworkFactory.newClient(ZK_ADDRESS, new RetryNTimes(10, 5000));
			
			client.start();
			
			System.out.println("客户端获取的节点数据："+new String(client.getData().forPath("/tmp")));
		}catch(Exception e){
			e.printStackTrace();
		}
		
	}
	
}
